<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>GraphChi: src/logger/logger.hpp File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">GraphChi
   &#160;<span id="projectnumber">0.1</span>
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Macros</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_68267d1309a1af8e8297ef4c3efbcdba.html">src</a></li><li class="navelem"><a class="el" href="dir_ffde1fbcaa8d6b0d34e29c3bddf7a801.html">logger</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">logger.hpp File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &lt;fstream&gt;</code><br/>
<code>#include &lt;sstream&gt;</code><br/>
<code>#include &lt;cstdlib&gt;</code><br/>
<code>#include &lt;iostream&gt;</code><br/>
<code>#include &lt;cassert&gt;</code><br/>
<code>#include &lt;cstring&gt;</code><br/>
<code>#include &lt;cstdarg&gt;</code><br/>
<code>#include &lt;pthread.h&gt;</code><br/>
</div>
<p><a href="logger_8hpp_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlogger__impl_1_1streambuff__tls__entry.html">logger_impl::streambuff_tls_entry</a></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfile__logger.html">file_logger</a></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlog__dispatch.html">log_dispatch&lt; dostuff &gt;</a></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlog__dispatch_3_01true_01_4.html">log_dispatch&lt; true &gt;</a></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlog__dispatch_3_01false_01_4.html">log_dispatch&lt; false &gt;</a></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structnull__stream.html">null_stream</a></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlog__stream__dispatch.html">log_stream_dispatch&lt; dostuff &gt;</a></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlog__stream__dispatch_3_01true_01_4.html">log_stream_dispatch&lt; true &gt;</a></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structlog__stream__dispatch_3_01false_01_4.html">log_stream_dispatch&lt; false &gt;</a></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a1632479322efa3952798f98177b54471"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#a1632479322efa3952798f98177b54471">LOG_NONE</a>&#160;&#160;&#160;5</td></tr>
<tr class="memitem:ac2164369b4d2bf72296f8ba6ea576ecf"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#ac2164369b4d2bf72296f8ba6ea576ecf">LOG_FATAL</a>&#160;&#160;&#160;4</td></tr>
<tr class="memitem:aced66975c154ea0e2a8ec3bc818b4e08"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#aced66975c154ea0e2a8ec3bc818b4e08">LOG_ERROR</a>&#160;&#160;&#160;3</td></tr>
<tr class="memitem:adf4476a6a4ea6c74231c826e899d7189"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#adf4476a6a4ea6c74231c826e899d7189">LOG_WARNING</a>&#160;&#160;&#160;2</td></tr>
<tr class="memitem:aeb4f36db01bd128c7afeac5889dac311"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#aeb4f36db01bd128c7afeac5889dac311">LOG_INFO</a>&#160;&#160;&#160;1</td></tr>
<tr class="memitem:a6ff63e8955665c4a58b1598f2b07c51a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#a6ff63e8955665c4a58b1598f2b07c51a">LOG_DEBUG</a>&#160;&#160;&#160;0</td></tr>
<tr class="memitem:a3d18ed817dcda9f54a4f353ccf9b1b36"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#a3d18ed817dcda9f54a4f353ccf9b1b36">OUTPUTLEVEL</a>&#160;&#160;&#160;<a class="el" href="logger_8hpp.html#a6ff63e8955665c4a58b1598f2b07c51a">LOG_DEBUG</a></td></tr>
<tr class="memitem:a407629ed2d44412adc1a9fd1bf8fc35b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a407629ed2d44412adc1a9fd1bf8fc35b"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#a407629ed2d44412adc1a9fd1bf8fc35b">COLOROUTPUT</a></td></tr>
<tr class="memdesc:a407629ed2d44412adc1a9fd1bf8fc35b"><td class="mdescLeft">&#160;</td><td class="mdescRight">If set, logs to screen will be printed in color. <br/></td></tr>
<tr class="memitem:ab58cdd006f6b33cbe171ab32effef95b"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="logger_8hpp.html#ab58cdd006f6b33cbe171ab32effef95b">logger</a>(lvl, fmt,...)&#160;&#160;&#160;(<a class="el" href="structlog__dispatch.html">log_dispatch</a>&lt;(lvl &gt;= <a class="el" href="logger_8hpp.html#a3d18ed817dcda9f54a4f353ccf9b1b36">OUTPUTLEVEL</a>)&gt;::exec(lvl,__FILE__, __func__ ,__LINE__,fmt,##__VA_ARGS__))</td></tr>
<tr class="memitem:ae20b7239b817483f352df7496c34155a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><b>logbuf</b>(lvl, buf, len)</td></tr>
<tr class="memitem:a7fe3c756650e371ad8739b860495106c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7fe3c756650e371ad8739b860495106c"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>logstream</b>(lvl)&#160;&#160;&#160;(<a class="el" href="structlog__stream__dispatch.html">log_stream_dispatch</a>&lt;(lvl &gt;= <a class="el" href="logger_8hpp.html#a3d18ed817dcda9f54a4f353ccf9b1b36">OUTPUTLEVEL</a>)&gt;::exec(lvl,__FILE__, __func__ ,__LINE__) )</td></tr>
<tr class="memitem:ab702106cf3b3e96750b6845ded4e0299"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab702106cf3b3e96750b6845ded4e0299"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>RESET</b>&#160;&#160;&#160;0</td></tr>
<tr class="memitem:ac7ebe8a74067308019e81190ede166e9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac7ebe8a74067308019e81190ede166e9"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>BRIGHT</b>&#160;&#160;&#160;1</td></tr>
<tr class="memitem:ac25189db92959bff3c6c2adf4c34b50a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25189db92959bff3c6c2adf4c34b50a"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>DIM</b>&#160;&#160;&#160;2</td></tr>
<tr class="memitem:aaec1a65734e33bc49e8dc8d90e9546bc"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaec1a65734e33bc49e8dc8d90e9546bc"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>UNDERLINE</b>&#160;&#160;&#160;3</td></tr>
<tr class="memitem:a38eec52a7dccb94ff563e30eda32c891"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a38eec52a7dccb94ff563e30eda32c891"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>BLINK</b>&#160;&#160;&#160;4</td></tr>
<tr class="memitem:a00548cec6d104932bf79a65bac1c47e8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00548cec6d104932bf79a65bac1c47e8"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>REVERSE</b>&#160;&#160;&#160;7</td></tr>
<tr class="memitem:ab42ef41116f8f2fe447484e2844cf0df"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab42ef41116f8f2fe447484e2844cf0df"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>HIDDEN</b>&#160;&#160;&#160;8</td></tr>
<tr class="memitem:a7b3b25cba33b07c303f3060fe41887f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7b3b25cba33b07c303f3060fe41887f6"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>BLACK</b>&#160;&#160;&#160;0</td></tr>
<tr class="memitem:a8d23feea868a983c8c2b661e1e16972f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d23feea868a983c8c2b661e1e16972f"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>RED</b>&#160;&#160;&#160;1</td></tr>
<tr class="memitem:acfbc006ea433ad708fdee3e82996e721"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acfbc006ea433ad708fdee3e82996e721"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>GREEN</b>&#160;&#160;&#160;2</td></tr>
<tr class="memitem:abf681265909adf3d3e8116c93c0ba179"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf681265909adf3d3e8116c93c0ba179"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>YELLOW</b>&#160;&#160;&#160;3</td></tr>
<tr class="memitem:a79d10e672abb49ad63eeaa8aaef57c38"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79d10e672abb49ad63eeaa8aaef57c38"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>BLUE</b>&#160;&#160;&#160;4</td></tr>
<tr class="memitem:a6f699060902f800f12aaae150f3a708e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f699060902f800f12aaae150f3a708e"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>MAGENTA</b>&#160;&#160;&#160;5</td></tr>
<tr class="memitem:ad243f93c16bc4c1d3e0a13b84421d760"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad243f93c16bc4c1d3e0a13b84421d760"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>CYAN</b>&#160;&#160;&#160;6</td></tr>
<tr class="memitem:a87b537f5fa5c109d3c05c13d6b18f382"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a87b537f5fa5c109d3c05c13d6b18f382"></a>
#define&#160;</td><td class="memItemRight" valign="bottom"><b>WHITE</b>&#160;&#160;&#160;7</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a820aa548737ed0a5cbce4d20cdbeb73a"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a820aa548737ed0a5cbce4d20cdbeb73a"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>textcolor</b> (FILE *handle, int attr, int fg)</td></tr>
<tr class="memitem:a5f0f93904d279224dd4da107408c1112"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5f0f93904d279224dd4da107408c1112"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>reset_color</b> (FILE *handle)</td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Copyright (c) 2009 Carnegie Mellon University. All rights reserved.</p>
<p>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at </p>
<pre class="fragment">http://www.apache.org/licenses/LICENSE-2.0
</pre> <pre class="fragment">Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an "AS
IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
express or implied.  See the License for the specific language
governing permissions and limitations under the License.
</pre><p>For more about this software visit: </p>
<pre class="fragment"> http://www.graphlab.ml.cmu.edu</pre><p>Usage: First include <a class="el" href="logger_8hpp.html">logger.hpp</a>. To logger, use the <a class="el" href="logger_8hpp.html#ab58cdd006f6b33cbe171ab32effef95b">logger()</a> function There are 2 output levels. A "soft" output level which is set by calling global_logger.set_log_level(), as well as a "hard" output level OUTPUTLEVEL which is set in the source code (logger.h).</p>
<p>when you call "logger()" with a loglevel and if the loglevel is greater than both of the output levels, the string will be written. written to a logger file. Otherwise, <a class="el" href="logger_8hpp.html#ab58cdd006f6b33cbe171ab32effef95b">logger()</a> has no effect.</p>
<p>The difference between the hard level and the soft level is that the soft level can be changed at runtime, while the hard level optimizes away logging calls at compile time.</p>
<dl class="section author"><dt>Author:</dt><dd>Yucheng Low (ylow) </dd></dl>
</div><hr/><h2>Macro Definition Documentation</h2>
<a class="anchor" id="a6ff63e8955665c4a58b1598f2b07c51a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOG_DEBUG&#160;&#160;&#160;0</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Debugging purposes only </p>

</div>
</div>
<a class="anchor" id="aced66975c154ea0e2a8ec3bc818b4e08"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOG_ERROR&#160;&#160;&#160;3</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Used for errors which are recoverable within the scope of the function </p>

</div>
</div>
<a class="anchor" id="ac2164369b4d2bf72296f8ba6ea576ecf"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOG_FATAL&#160;&#160;&#160;4</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>NOTICE: This file taken from GraphLab (as stated in the license above). I have merged the CPP and HPP files. </p>
<dl class="section author"><dt>Author:</dt><dd>Aapo Kyrola</dd></dl>
<p>Used for fatal and probably irrecoverable conditions </p>

</div>
</div>
<a class="anchor" id="aeb4f36db01bd128c7afeac5889dac311"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOG_INFO&#160;&#160;&#160;1</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Used for providing general useful information </p>

</div>
</div>
<a class="anchor" id="a1632479322efa3952798f98177b54471"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOG_NONE&#160;&#160;&#160;5</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>OUTPUTLEVEL to LOG_NONE to disable logging </p>

</div>
</div>
<a class="anchor" id="adf4476a6a4ea6c74231c826e899d7189"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LOG_WARNING&#160;&#160;&#160;2</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Logs interesting conditions which are probably not fatal </p>

</div>
</div>
<a class="anchor" id="ae20b7239b817483f352df7496c34155a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define logbuf</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">lvl, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">buf, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">len&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<b>Value:</b><div class="fragment"><div class="line">(<a class="code" href="structlog__dispatch.html">log_dispatch&lt;(lvl &gt;</a>= <a class="code" href="logger_8hpp.html#a3d18ed817dcda9f54a4f353ccf9b1b36">OUTPUTLEVEL</a>)&gt;::exec(lvl,__FILE__,     \</div>
<div class="line">                        __func__ ,__LINE__,buf,len))</div>
</div><!-- fragment -->
</div>
</div>
<a class="anchor" id="ab58cdd006f6b33cbe171ab32effef95b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define logger</td>
          <td>(</td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">lvl, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname">fmt, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">&#160;</td>
          <td class="paramname"><em>...</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td>&#160;&#160;&#160;(<a class="el" href="structlog__dispatch.html">log_dispatch</a>&lt;(lvl &gt;= <a class="el" href="logger_8hpp.html#a3d18ed817dcda9f54a4f353ccf9b1b36">OUTPUTLEVEL</a>)&gt;::exec(lvl,__FILE__, __func__ ,__LINE__,fmt,##__VA_ARGS__))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>extracts the filename, line number and function name and calls _log. It will be optimized away if LOG_NONE is set This relies on a few compiler macros. As far as I know, these macros are pretty standard among most other C++ compilers. </p>

</div>
</div>
<a class="anchor" id="a3d18ed817dcda9f54a4f353ccf9b1b36"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define OUTPUTLEVEL&#160;&#160;&#160;<a class="el" href="logger_8hpp.html#a6ff63e8955665c4a58b1598f2b07c51a">LOG_DEBUG</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>The minimum level to logger at </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jul 5 2012 00:11:18 for GraphChi by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.1.1
</small></address>
</body>
</html>
